#include "ResultadoPlanDeCarreraPage.h"

using namespace presentacion;

ResultadoPlanDeCarreraPage::ResultadoPlanDeCarreraPage(void)
{
	this->pantalla = SDL_SetVideoMode(500,500,24,SDL_SWSURFACE|SDL_DOUBLEBUF|SDL_NOFRAME);
	this->fondo = SDL_LoadBMP(RUTA_IMAGEN_FONDO_PAGE);
	this->botonSalir = new Boton(RUTA_IMAGEN_BOTON_SALIR, 400, 20);

	SDL_BlitSurface(this->fondo, NULL, this->pantalla, NULL);
	SDL_BlitSurface(this->botonSalir->GetImagen(), &(this->botonSalir->GetRecorte(0)), this->pantalla, &(this->botonSalir->GetRectangulo()));
	SDL_Flip(this->pantalla);
};

int ResultadoPlanDeCarreraPage::CapturarEvento()
{
	SDL_Event evento;
	int unaAccion = 0;
	while (unaAccion==0) {
		if( SDL_PollEvent( &evento ) ){
			if (this->botonSalir->CapturarEvento(&evento)){
				if (evento.type == SDL_MOUSEBUTTONDOWN)
				{
					unaAccion=3;
				}
			}
		}
	}
	return unaAccion;
};

void ResultadoPlanDeCarreraPage::Escribir(string mensaje)
{
	Texto* nuevoMensaje = new Texto ("ArchivoDeFuentes.ttf", TAMANIO_LETRA, mensaje);
	this->mensajes.push_back(nuevoMensaje);
	this->RefrescarMensaje(nuevoMensaje);
};

void ResultadoPlanDeCarreraPage::EscribirError(string mensaje)
{
	Texto* nuevoMensaje = new Texto ("ArchivoDeFuentes.ttf", TAMANIO_LETRA, "[WARN] : " + (mensaje));
	this->mensajes.push_back(nuevoMensaje);
	this->RefrescarMensajeError(nuevoMensaje);
};

void ResultadoPlanDeCarreraPage::EscribirInfo(string mensaje)
{
	Texto* nuevoMensaje = new Texto ("ArchivoDeFuentes.ttf", TAMANIO_LETRA, "[INFO] : " + (mensaje));
	this->mensajes.push_back(nuevoMensaje);
	this->RefrescarMensajeInfo(nuevoMensaje);
};

void ResultadoPlanDeCarreraPage::Limpiar()
{
	this->mensajes.clear();
	
	SDL_Rect unRectangulo;
	unRectangulo.x = INICIO_AREA_ESCRITURA_X;
	unRectangulo.y = INICIO_AREA_ESCRITURA_y;
	unRectangulo.w = (500 - INICIO_AREA_ESCRITURA_X*2);
	unRectangulo.h = (500 - INICIO_AREA_ESCRITURA_y - 100);
	SDL_FillRect( fondo, &(unRectangulo), SDL_MapRGB(fondo->format, 0xFF, 0xFF, 0xFF ) );
};

/*
* Vuelve a dibujar todos los mensajes actuales
*/
void ResultadoPlanDeCarreraPage::RefrescarMensaje(Texto* mensaje)
{		
	int yAdicional = ESPACIO_ENTRE_LINEAS * (this->mensajes.size() - 1);
	mensaje->EscribirEn(this->fondo, yAdicional);
	this->RefrescarPantalla();
};

void ResultadoPlanDeCarreraPage::RefrescarMensajeError(Texto* mensaje)
{		
	int yAdicional = ESPACIO_ENTRE_LINEAS * (this->mensajes.size() - 1);
	mensaje->EscribirErrorEn(this->fondo, yAdicional);
	this->RefrescarPantalla();
};

void ResultadoPlanDeCarreraPage::RefrescarMensajeInfo(Texto* mensaje)
{		
	int yAdicional = ESPACIO_ENTRE_LINEAS * (this->mensajes.size() - 1);
	mensaje->EscribirInfoEn(this->fondo, yAdicional);
	this->RefrescarPantalla();
};

/*
* Vuelve a dibujar todos los componentes de la pantalla
*/
void ResultadoPlanDeCarreraPage::RefrescarPantalla()
{
	SDL_BlitSurface(this->fondo, NULL, this->pantalla, NULL);
	SDL_BlitSurface(this->botonSalir->GetImagen(), &(this->botonSalir->GetRecorte(0)), this->pantalla, &(this->botonSalir->GetRectangulo()));
	SDL_Flip(this->pantalla);
};
